package com.hsurosy.hsuchain.nft.base.response;

import lombok.Data;

import java.util.List;

/**
 * 分页响应类
 *
 * @Author Hsu琛君珩
 * @Date 2024-10-04 17:36
 * @Description
 * @Version: v1.0.0
 */
@Data
public class PageResponse<T> extends MultiResponse<T> {

    private static final long serialVersionUID = 1L;

    /**
     * 当前页码
     */
    private int currentPage;

    /**
     * 每页结果数
     */
    private int pageSize;

    /**
     * 总页数
     */
    private int totalPage;

    /**
     * 总记录数
     */
    private int total;

    /**
     * 创建包含分页信息的成功响应
     *
     * @param datas 响应数据列表
     * @param total 总记录数
     * @param pageSize 每页结果数
     * @param currentPage 当前页码
     * @param <T> 数据类型
     * @return PageResponse 包含分页信息的响应对象
     */
    public static <T> PageResponse<T> of(List<T> datas, int total, int pageSize, int currentPage) {
        PageResponse<T> pageResponse = new PageResponse<>();
        pageResponse.setSuccess(true);
        pageResponse.setDatas(datas);
        pageResponse.setTotal(total);
        pageResponse.setPageSize(pageSize);
        pageResponse.setCurrentPage(currentPage);
        pageResponse.setTotalPage((pageSize + total - 1) / pageSize);
        return pageResponse;
    }
}
